package cac.gkinterface.rest;

import java.io.File;
import java.util.Date;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.scheduling.annotation.Async;
import org.springframework.scheduling.annotation.EnableAsync;
import org.springframework.scheduling.annotation.EnableScheduling;
import org.springframework.scheduling.annotation.Scheduled;
import org.springframework.stereotype.Component;

import cn.hutool.core.date.DateUtil;
import cn.hutool.core.io.FileUtil;




/**
* @ClassName: CampusHioFileDeleteTask
* @Description:	代码部署在工控网时，针对打包的数据文件，进行定期清理，避免磁盘用满
* @author: 杨铁军
* @date: 2022年7月12日 上午10:39:44
*/
@Component
@EnableScheduling // 开启定时任务
@EnableAsync // 开启多线程
public class GkHioFileDeleteTask {
//	@Value("${pathProperty.path}")
//    String a;

    @Autowired
    private Environment environment;

	/**   
	* @Title: deleteGkSinkFile   
	* @Description: 工控网数据打包回传园区网，文件定时清理，每天凌晨4点05分执行，删除超过10天的文件及文件夹      
	*/
	@Async
	@Scheduled(cron = "0 05 4 * * ?")
	public void deleteGkSinkFile() {

        System.out.println("=========工控网数据打包回传园区网，文件定时清理，时间：" + DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss"));
		
		try {
				
//			// 在项目路径下按日期创建文件夹
//			String classPath = this.getClass().getResource("").getPath();
//			String projectPath = classPath.split("WEB-INF")[0];
//			String GkSinkFilePath = projectPath + "GkSinkFile";
            //获取文件配置路径
            String fileDir = environment.getProperty("pathProperty.path");
			File GkSinkFile = new File(fileDir);

			File[] files = GkSinkFile.listFiles();
			for (File file : files) {
				// 按日期创建的文件夹
				String dateDirName = file.getName();				
				Date dateDir  = DateUtil.parse(dateDirName);
				
				// 超过10天的文件需要删除
				if ((new Date().getTime() - dateDir.getTime()) > (60*60*24*1000*10)) {
					FileUtil.del(file);
				}
			}
            System.out.println("=========工控网数据打包回传园区网，文件定时清理成功！");
			
		} catch (Exception e) {
            System.out.println("=========工控网数据打包回传园区网，文件定时清理失败！" + e.getMessage());
		}
	}
}
